package com.fly.service.Impl;

import com.fly.bean.Role;
import com.fly.mapper.RoleMapper;
import com.fly.service.RoleService;
import com.fly.util.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {
    @Resource
    private RoleMapper roleMapper;

    /**
     * 查询角色数量
     * @return
     */
    @Override
    public Integer selectRoleNumber() {
        return roleMapper.selectRoleNumber();
    }

    /**
     * 得到所有的角色信息分页显示
     * @return
     */
    @Override
    public List<Role> getAllRole(Page page) {
        return roleMapper.getAllRole(page);
    }

    /**
     * 模糊查询角色数量
     * @param roleName
     * @param sysProValueName
     * @return
     */
    @Override
    public Integer selectRoleNumberByFuzzyQuery(String roleName, String sysProValueName) {
        return roleMapper.selectRoleNumberByFuzzyQuery(roleName,sysProValueName);
    }

    /**
     * 根据模糊查询的结果分页显示到页面
     * @param page
     * @param roleName
     * @param sysProValueName
     * @return
     */
    @Override
    public List<Role> selectRoleByRoleNameOrSysProValueName(Page page,String roleName,String sysProValueName) {
        return roleMapper.selectRoleByRoleNameOrSysProValueName(page,roleName,sysProValueName);
    }

    /**
     * 查询role表中所有的角色编号信息，判断前端传来的roleNo是否已存在
     * @return
     */
    @Override
    public String selectRoleNo(String roleNo) {
        return roleMapper.selectRoleNo(roleNo);
    }

    /**
     *  查询role表中所有的角色名称信息，判断前端传来的roleName是否已存在
     * @return
     */
    @Override
    public String selectRoleName(String roleName) {
        return roleMapper.selectRoleName(roleName);
    }

    /**
     * 根据sysProId和sysProValueName得到id就是得到roleState
     * @param sysProValueName
     * @return
     */
    @Override
    public Integer selectRoleStateBySysProIdAndSysProValueName(String sysProValueName) {
        return roleMapper.selectRoleStateBySysProIdAndSysProValueName(sysProValueName);
    }

    /**
     * 修改角色的状态信息
     * @param roleState
     * @return
     */
//    @Override
//    public Integer modifyRoleState(Integer roleState) {
//        return null;
//    }

    /**
     * 修改角色表的角色编号，角色名称和状态信息，只有超级管理员才有权限修改
     * @param role
     * @return
     */
    @Override
    public Integer modifyRoleNoAndRoleName(Role role) {
        return roleMapper.modifyRoleNoAndRoleName(role);
    }

    /**
     * 根据角色Id查询角色名称
     * @param roleId
     * @return
     */
    @Override
    public String selectRoleNameByRoleId(Integer roleId) {
        return roleMapper.selectRoleNameByRoleId(roleId);
    }

    /**
     * 根据角色ID删除角色信息
     * @param roleId
     * @return
     */
    @Override
    public Integer deleteRole(Integer roleId) {
        return roleMapper.deleteRole(roleId);
    }

    /**
     * 根据角色状态配置查询sysProId用于添加角色使用
     * @param sysProName
     * @return
     */
    @Override
    public Integer selectSysProIdBySysProName(String sysProName) {
        return roleMapper.selectSysProIdBySysProName(sysProName);
    }

    /**
     * 根据添加的角色状态给其查找出相对应的id赋值给roleState
     * @param sysProValueName
     * @param sysProId
     * @return
     */
    @Override
    public Integer selectIdBySysProValueNameAndSysProId(String sysProValueName, Integer sysProId) {
        return roleMapper.selectIdBySysProValueNameAndSysProId(sysProValueName,sysProId);
    }

    /**
     * 添加角色信息
     * @param roleNo
     * @param roleName
     * @param userId
     * @param roleState
     * @param sysProId
     * @return
     */
    @Override
    public Integer addRole(String roleNo, String roleName, Integer userId, Integer roleState, Integer sysProId) {
        return roleMapper.addRole(roleNo,roleName,userId,roleState,sysProId);
    }

    /**
     * 通过角色Id查找角色编号
     * @param roleId
     * @return
     */
    @Override
    public String selectRoleNoByRoleId(Integer roleId) {
        return roleMapper.selectRoleNoByRoleId(roleId);
    }
}
